package com.ZeroCarbon.domain.po;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSONUtil;
import com.ZeroCarbon.domain.dto.GoodsDetailDTO;
import com.ZeroCarbon.domain.dto.GoodsPreviewDTO;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * 商品类
 *
 * @since 2024-11-5
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("goods")
public class Good {
    /**
     * 商品id
     */
    private String id;

    /**
     * 用户id
     */
    private String userId;

    /**
     * 身份id
     */
    private String identityId;

    /**
     * 名称
     */
    private String name;

    /**
     * 图片Json
     */
    private String imagesJson;

    /**
     * 描述
     */
    private String description;

    /**
     * 价格
     */
    private double price;

    /**
     * 所需积分
     */
    private int integral;

    /**
     * 标签Json
     */
    private String tagsJson;

    /**
     * 库存
     */
    private int number;

    /**
     * 是否保存
     */
    @TableField("is_save")
    private boolean saveCondition;

    /**
     * PO转GoodsPreviewDTO
     */
    public GoodsPreviewDTO toGoodsPreviewDTO() {
        //拷贝对象
        GoodsPreviewDTO goodsPreviewDTO = BeanUtil.copyProperties(this, GoodsPreviewDTO.class);
        //设置信息并返回
        return goodsPreviewDTO
                //设置图片信息
                .setImage(JSONUtil.toList(JSONUtil.parseArray(imagesJson), String.class).get(0))
                //设置标签信息
                .setTags(JSONUtil.toList(JSONUtil.parseArray(tagsJson), String.class));
    }

    /**
     * PO转GoodsDetailDTO
     */
    public GoodsDetailDTO toGoodsDetailDTO() {
        //拷贝对象
        GoodsDetailDTO goodsDetailDTO = BeanUtil.copyProperties(this, GoodsDetailDTO.class);
        //设置信息并返回
        return goodsDetailDTO
                //设置照片组
                .setImages(JSONUtil.toList(JSONUtil.parseArray(imagesJson), String.class))
                //设置标签信息
                .setTags(JSONUtil.toList(JSONUtil.parseArray(tagsJson), String.class));
    }
}
